Today's systems on chip (SoCs) often comprise, as functional units or in addition to functional units, one or more observer units for detecting certain data processing events (referred to herein as the events of interest) on the SoC. For example, a bus observer unit can be connected to monitor a bus on the SoC for certain types of events and to generate a corresponding detection signal. Events to be detected by an observer unit can, for example, include certain transactions, requests, alerts, or repeated occurrences of such events. As another example, a display observer unit can be arranged to detect vsync symbols (e.g., in the form of voltage pulses) in a vertical synchronization (vsync) signal for controlling a video display.
An SoC may include quite a large number of observer units and these can be rather expensive. Typically, an observer unit is effective for a special purpose. However, an application executed by a processor core on the SoC, a profiling measurement, or a debugging operation may require combining several (i.e. two or more) events detected by one or more observer units or identifying a sequence of events. The way in which a combination or a sequence of events is defined may vary greatly from on SoC to another and may also be application-specific. Simultaneous events and/or a history of events can be evaluated by the one or more processor cores of the SoC, but this can consume valuable processing resources and also bring with it a delay (possibly several clock cycles) before the SoC can respond to a critical combination or history of events.
It would be desirable to save processing resources and power, by eliminating the need to use software for combining events or checking for a sequence of events; without losing the flexibility software provides to combine basically events from all observers within a SoC. Furthermore, it would be desirable to enable the SoC to respond rapidly, preferably with a delay of less than one or two clock cycles, to critical combinations of events, e.g., from several observer units, or to a certain sequence of events, e.g., event A detected by a first observer unit followed by event B detected by a second observer unit. It is understood that having such a capability enables a new set of applications that is not possible by involving software for combining or sequencing of corresponding events.